package cn.tedu.ems.mapper;

import cn.tedu.ems.pojo.dto.TeacherUpdateDTO;
import cn.tedu.ems.pojo.entity.Teacher;
import cn.tedu.ems.pojo.vo.TeacherAndCourseListVO;
import cn.tedu.ems.pojo.vo.TeacherDetailVO;
import cn.tedu.ems.pojo.vo.TeacherListVO;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface TeacherMapper {
    /**
     * 执行添加教师的功能
     * @param teacher 接收添加的教师信息
     */
    int insert(Teacher teacher);

    /**
     * 执行删除教师功能
     * @param id 要删除的教师Id
     */
    int deleteById(Long id);

    /**
     * 执行修改教师信息的功能
     * @param teacher 接收修改后的教师信息
     */
    int updateById(Teacher teacher);

    /**
     * 根据教师姓名查询数量
     * @param name 教师姓名
     * @return 返回查询的数量
     */
    int countByName(String name);

    /**
     * 执行根据姓名和职工ID查询教师所有信息
     * @param name 姓名
     * @param jobId 职工ID
     * @return 返回该教师所有信息
     */
    TeacherDetailVO selectDetail(String name, String jobId);

    /**
     * 执行查询修改前的教师信息
     * @param jobId 要修改的教师职工Id
     * @return 返回修改前的教师信息
     */
    TeacherDetailVO selectByJobId(String jobId);

    /**
     * 执行查询修改前的教师信息
     * @param id 要修改的教师Id
     * @return 返回修改前的教师信息
     */
    TeacherDetailVO selectById(Long id);

    /**
     * 查询教师列表的所有信息
     * @return 返回教师列表的信息
     */
    List<TeacherListVO> select();

    /**
     * 模糊查询教师列表
     * @param wd 模糊字段
     * @return 返回列表
     */
    List<TeacherListVO> selectWd(String wd);

    /**
     * 模糊查询关联信息
     * @return 返回模糊列表
     */
    List<TeacherAndCourseListVO> selectWdToTC(String wd);

    /**
     * 查询教师与课程关联表的列表授课信息
     * @return 返回列表集合
     */
    List<TeacherAndCourseListVO> selectTCList();
}
